feat(sdk-coin-sol): big endian support for verifyTransaction #7265
+45
−3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
TICKET: WP-6284
Fix s390x endianness issue in Solana transaction verification
Problem
On s390x (big-endian) architecture,
@solana/web3.jsincorrectly reads Solana's little-endian u64 amounts as big-endian during transaction parsing inTransaction.fromRawTransaction(). The library uses Node.js Buffer methods that are architecture-dependent, causing byte order misinterpretation.This results in corrupted amounts when
explainTransaction()is called:Both cases cause
verifyTransaction()to fail when comparing parsed transaction amounts against user-provided recipients.Root Cause
@solana/web3.jsparser uses Buffer reads that respect architecture endiannessSolution
Added
getAmountBasedOnEndianness()helper function that:process.archApplied in
verifyTransaction()when: